package com.mastercard.assets.web.struts.actions;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblCuenta;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.GenerarCampanaForm;
import com.mastercard.assets.web.struts.forms.SolicitarPaqueteRegistrarForm;
import com.mastercard.assets.web.util.to.ManejadorPaquetesSolicitar;
import com.mastercard.assets.web.util.to.UserLogin;

public class ListarPaquetesAsignadosBuscarPaquetes
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el id
		int cveCuenta = user.getActualCountId( ) ;
		
		System.out.println( "ListarPaquetesAsignadosBuscarPaquetes.java: " + cveCuenta ) ;
		
		TblCuenta cuenta = MasterCardDAO.findCountById( cveCuenta ) ;
		MasterCardDAO.closeEntityManager( ) ;
		
		TblTipoCuenta tipoCuenta = cuenta.getTblTipoCuenta( ) ;
		
		
		GenerarCampanaForm f1 = new GenerarCampanaForm( ) ;
                
		SolicitarPaqueteRegistrarForm f2 = new SolicitarPaqueteRegistrarForm( ) ;
                
		
		try
		{
			/// ::::::: MODIFICAIONES aLEX, sacar pantalla :::::::
                        try
		{
			// obtiene los paquetes asignados al tipo de cuenta
			ManejadorPaquetesSolicitar manejador = new ManejadorPaquetesSolicitar( ) ;
			manejador.setCveTipoCuenta( tipoCuenta.getCveTipoCuenta( ) ) ;
			manejador.setCveCuenta( cveCuenta ) ;
			manejador.initialize( ) ;
			
			// agrega al form
			f2.setPackageManager( manejador ) ;
			
			request.setAttribute( "SolicitarPaqueteRegistrarForm" , f2 ) ;
			f2 = new SolicitarPaqueteRegistrarForm( ) ;
		  	//return mapping.findForward( "success" ) ;
		}catch( MasterCardException mce )
		{
			user.setMessageError( mce.getSingularMessage( ) ) ;
			
			user.setNextWorkArea( "" ) ;
			
		  	//return mapping.findForward( "success" ) ;
		}
                        
                        /// ::::::: MODIFICAIONES aLEX, sacar pantalla :::::::
                    
                    
                        f1.setCveCuenta( cveCuenta ) ;
			// obtiene los paquetes asignados al tipo de cuenta
			f1.getPackageManager( ).initialize( ) ;
			
			request.setAttribute( "GenerarCampanaForm" , f1 ) ;
			f1 = new GenerarCampanaForm( );
                        if( user.getIdioma( ) == 0 ) {
                            return mapping.findForward( "success" ) ;
                        } else {
                            return mapping.findForward( "successEng" ) ;
                        }
		  	
		}catch( MasterCardException mce )
		{
			user.setMessageError( mce.getSingularMessage( ) ) ;
			
			user.setNextWorkArea( "/WEB-INF/pages/WorkArea/ListarPaquetesAsignadosError.jsp" ) ;
			
		  	if( user.getIdioma( ) == 0 ) {
                            return mapping.findForward( "success" ) ;
                        } else {
                            return mapping.findForward( "successEng" ) ;
                        }
		}
	}
	
}
